<template>
  <div>
    <div id="root">
  <div class="todo-container">
    <div class="todo-wrap">
      <!-- {{this.todoList[0].done}} -->
      <Header :addNumHandle='addNumHandle'/>
      <List :todoList='todoList' :singelHandle='singelHandle' :deleteHandle='deleteHandle'/>
      <Footer :todoList='todoList' :allcheckedHandle='allcheckedHandle' :alldeleteHandle='alldeleteHandle'/>
      
      
     
    </div>
  </div>
</div>
  </div>
</template>

<script>


import Header from './components/Header'
import Footer from './components/Footer'
import List from './components/List'
export default {
name:'App',
components:{
  Header,
  Footer,
  List
},
data(){
  return {
    todoList:[]
      
    
  }
},
methods: {
  // 1.修改data数据
  addNumHandle(newTodo){
    this.todoList.unshift(newTodo)

  },
  // 2.选中改变单个done状态
  singelHandle(id){
    this.todoList=this.todoList.map((item)=>{
      return item.id===id?{...item,done:!item.done}:item
    })
  },

  // 3.单个删除
  deleteHandle(id){
    this.todoList=this.todoList.filter((item)=>{
      return item.id!==id
    })
  },
  // 4.全选逻辑
  allcheckedHandle(value){
    this.todoList=this.todoList.map((item)=>({...item,done:value})
    
    )
  },
  // 5.删除已完成
  alldeleteHandle(){
    this.todoList=this.todoList.filter((item)=>{
      return !item.done
    })
  }
},
// 数据持久化
mounted() {
  this.todoList=JSON.parse(localStorage.getItem('todoList')||'[]')
},
watch:{
  todoList:{
    deep:true,
    handler(){
      localStorage.setItem('todoList',JSON.stringify(this.todoList))
    }
  }
}
}
</script>

<style>
/*base*/
body {
  background: #fff;
}

.btn {
  display: inline-block;
  padding: 4px 12px;
  margin-bottom: 0;
  font-size: 14px;
  line-height: 20px;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: 4px;
}

.btn-danger {
  color: #fff;
  background-color: #da4f49;
  border: 1px solid #bd362f;
}

.btn-danger:hover {
  color: #fff;
  background-color: #bd362f;
}

.btn:focus {
  outline: none;
}

.todo-container {
  width: 600px;
  margin: 0 auto;
}
.todo-container .todo-wrap {
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
}






</style>